package com.wm.ad_navi_new.skin

import com.wm.ad_navi_new.SkinConfig
import com.wm.ad_navi_new.skin.interfaces.ISkinUpdateListener

object SkinManager {

    private var mSkinObservers: MutableList<ISkinUpdateListener> = mutableListOf()

    /**
     * 当前的皮肤类型
     */
    private var CURRENT_SKIN = SkinConfig.SKIN_NAME_DEFAULT

    fun attach(listener: ISkinUpdateListener) {
        if (!mSkinObservers.contains(listener)) {
            mSkinObservers.add(listener)
        }
    }

    /**
     * 判断当前要设置的皮肤是否是默认皮肤
     * 当前设置的皮肤为空时，返回默认皮肤
     * @return
     */
    fun isCurrentDefaultSkin(): Boolean {
        return SkinConfig.SKIN_NAME_DEFAULT == CURRENT_SKIN || "" == CURRENT_SKIN
    }

    /**
     * 使用当前版本风格修饰资源名
     * @param value 资源名
     * @return 修饰后的资源名
     */
    fun wrapper(value: String): String {
        return if (isCurrentDefaultSkin()) value else value + SkinConfig.SEPARATOR + CURRENT_SKIN
    }

    /**
     * 更新换肤
     */
    fun changeSkin() {
        CURRENT_SKIN = SkinConfig.SKIN_NAME_NIGHT
        for (skinObservers in mSkinObservers) {
            skinObservers.onThemeUpdate()
        }
    }

}